<?php
namespace app\admin\controller;

use hg\apidoc\annotation as Apidoc;
use app\common\lib\Show;
use app\common\lib\Str;
use think\Exception;
use think\facade\Cache;
use app\common\lib\Email;
use app\common\sms\Sms;

/**
 * @Apidoc\Title("信息认证")
 * @Apidoc\Group("InfoVerify")
 * @Apidoc\Sort("3")
 */

class InfoVerify extends AdminBaseController
{
  /**
   * @Apidoc\Title("发送邮箱验证码")
   * @Apidoc\Desc("发送邮箱验证码接口")
   * @Apidoc\Author("ckmmd")
   * @Apidoc\Url("/admin/info_verify/send_email")
   * @Apidoc\Method("POST")
   * @Apidoc\Tag("信息认证")
   * @Apidoc\Param("username", type="string",require=true, desc="用户名" )
   * @Apidoc\Param("email", type="string",require=true, desc="邮箱" )
   * @Apidoc\Returned("data", type="boolean", desc="业务数据")
   */
  public function sendEmail(){
    if (!$this->request->isPost()) {
      return Show::error('错误的请求'); 
    }
    $qurey_info = $this->request->param();
    $pattern = "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/i";
    preg_match($pattern, $qurey_info['email'], $isEmail);
    if (!$isEmail) return Show::error('邮箱格式不合法');
    try {
      $code = Str::getEmailCode();
      $result = Email::sendEmail($qurey_info['email'], $code);
      if($result === true) {
        // 存储登陆信息
        Cache::store('redis')->set($qurey_info['username'].$code, $code);
        return Show::success($result, '已经发送，请查收！',200);
      } else {
        return Show::error($result);
      }
    } catch (Exception $e) {
      return Show::error($e->getMessage());
    }
  }
  /**
   * @Apidoc\Title("发送手机验证码")
   * @Apidoc\Desc("发送手机验证码接口")
   * @Apidoc\Author("ckmmd")
   * @Apidoc\Url("/admin/info_verify/send_sms")
   * @Apidoc\Method("POST")
   * @Apidoc\Tag("信息认证")
   * @Apidoc\Param("phone", type="string",require=true, desc="手机号" )
   * @Apidoc\Returned("data", type="boolean", desc="业务数据")
   */
  public function sendSms()
  {
    $sms = new Sms();
    /**
     * 腾讯云短信基本配置
     * @param string $appId  腾讯云短信AppId
     * @param string $appKey 腾讯云短信AppKey
     */
    // $sms->qCloudSms('1400382201', '1001573177');
    /**
     * 指定模板单发
     * @param  int    $nationCode  国家码，如 86 为中国
     * @param  string $phoneNumber 不带国家码的手机号
     * @param  int    $tempId      模板 id
     * @param  string $param       模板参数列表，如模板 {1}...{2}...{3}，那么需要带三个参数
     * @param  string $sign        签名，如果填空串，系统会使用默认签名
     * @return bool                
     */
    // $code = rand(111111, 999999);
    // $res = $sms->qCloudSmsParam(86, '13509634005', 977841, $code, '316607');

    /**
     * 阿里云短信基本配置
     *
     * @param string $accessKeyId     AccessKeyId
     * @param string $accessKeySecret AccessKeySecret
     * @param string $signName        签名内容
     * @param string $templateCode    短信模板CODE
     */
    $sms->aliSms('AccessKeyId', 'AccessKeySecret', '签名内容', '短信模板CODE');
    /**
     * 阿里云短信发送
     *
     * @param string $phone 短信接受手机号码
     * @param string $param 数字验证码
     * @return bool
     */
    $code = rand(111111, 999999);//验证码
    $res = $sms->aliSmsParam('13509634005', $code);
    if($res === true){
      return '发送成功';
    }else{
      return '发送失败';
    }
  }
}
